# include <stdio.h>
# include <string.h>
# include <stdlib.h>

void free_pointer(char* ptr){
		free(ptr);
		ptr=NULL;
    	// printf("%s\n",ptr); //segmentation fault
}

int main () {
    char yytext[256]; 
  

    strcpy(yytext, "Hello!\n");
   
    printf("%s",yytext);
   // free(yytext); // can not be free-ed
    char* str = (char*) malloc(256); 
   
    strcpy(str, "Hello!\n");
   
    printf("%s",str);

    free(str);
    // free(str); // can not be free-ed twice
	// if(str==NULL){
	// 	printf("OK");	
	// 	char* null_str = NULL;
	// 	char* null_str = NULL;
	// 	free(null_str);
	// }

	str = (char*) malloc(256); 
    strcpy(str, "Hello OK!\n");
    printf("%s",str);
	free_pointer(str);
    printf("%s",str);
	free(str);
    printf("Again %s ",str);
	if (str==NULL) {
		printf("OK\n");	
		char* null_str = NULL;
		free(null_str);
	}


    return 0;
}


